﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VisualPoint.Controls.Models;

namespace VisualPoint.Controls.Actions
{
    public abstract class  BaseAction : BaseModel
    {
        public abstract string Name { get; }
        public abstract string Description { get; }
        public abstract string Help { get; }


        private ActionTime _ActionTime;
        public ActionTime ActionTime
        {
            get { return _ActionTime; }
            set 
            { 
                _ActionTime = value;
                DoPropertyChanged("ActionTime");
            }
        }

        protected void DoDescriptionChanged()
        {
            DoPropertyChanged("Description");
        }

        public int Order { get; set; }

        public virtual void InitializeNew()
        {

        }

        public abstract void Run();

        public abstract BaseActionModel CreateModel();
    }
}
